<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //promise的实例方法 : 实例化对象拥有的方法
      //1.catch方法: 捕捉promise错误的
      //   let p = new Promise((resolve, reject) => {
      //     let num = randomNum(1, 10);
      //     if (num > 5) {
      //       resolve("sucess");
      //     } else {
      //       reject("error");
      //     }
      //   });

      //   function randomNum(min, max) {
      //     return parseInt(Math.random() * (max - min)) + min;
      //   }
      //   console.log(randomNum(1, 10));
      //   //   catch方法实际上是onRejected方法的别名
      //   p.then((res) => {
      //     console.log(res);
      //   }).catch((err) => {
      //     console.log("catch捕捉的错误", err);
      //   });

      //
      //catch可以捕捉链式上的错误
      //   let p = new Promise((resolve, reject) => {
      //     resolve("sucess");
      //     // reject("111error")
      //   });

      //每一个then方法 都写上onResolved和onRejected方法
      //   p.then((res) => {
      //     console.log(res);
      //     return new Promise((resolve, reject) => {
      //       resolve("success2");
      //       // reject("222error");
      //     });
      //   })
      //     .then((res) => {
      //       console.log(res);
      //     })
      //     .then((err) => {
      //       console.log("catch", err);
      //     });

      //
      //2.finally方法 当promise执行完毕之后执行
      //   无论promise是执行成功了还是失败了 都是执行完了
      let p = new Promise((resolve, reject) => {
        setTimeout(() => {
          let num = randomNum(1, 10);
          if (num > 5) {
            resolve("sucess");
          } else {
            reject("error");
          }
        }, 1000);
      });
      p.then(
        (res) => {
          console.log(res);
          // console.log("执行完了");
        },
        (err) => {
          console.log(err);
          //   console.log("执行完了");
        }
      ).finally(() => {
        //无论promise是执行成功或者失败 只要promise结束了就会执行finally方法
        console.log("执行完了");
      });
    </script>
  </body>
</html>
